# 主要用于书写中间件

# 从django的工具库中引入构建中间件的基类
from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponse
# uuid，一套唯一编码的算法
import uuid
from apps.index.models import LoginStatus
import time
class FirsMiddleware(MiddlewareMixin):
    def process_request(self,request):
        # print(request.get_full_path())
        token = request.META.get('HTTP_TOKEN') #获取请求头中的数据
        # 请求头中的参数都在 request对象的 META属性中，是可以get方法进行获取，
        # 请求头中的键必须使用大写，并且以HTTP_开头
        # select token from index_loginstatus where token='08402c86-60ef-4693-a8f0-b7a45c70e00f'
        loginData = LoginStatus.objects.filter(token=token)
        # loginData = LoginStatus.objects.raw('''select id from index_loginstatus where token='{}';'''.format(token))



        if request.get_full_path()== '/login':
            return None #代表请求通过
        elif len(loginData)==1:
            print('这里是token', len(loginData), loginData[0].create_time)

            # 日期和时间
            # nowTime = time.time() #获取当时间  的 时间戳，1970年1月1日 00:00:00 的秒数
            # DateTimeStr = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
            # print(DateTimeStr)
            # 两个时间的时间差
            time1 = time.mktime(time.strptime(loginData[0].create_time, '%Y-%m-%d %H:%M:%S'))
            time2 = time.mktime(time.localtime())
            n = time2 - time1
            if n<7200 : #7200秒是我们自定的token有效期
                return None
            else:
                return HttpResponse('请登录')
    def process_response(self,request,response):
        return response